package cn.cai.passwordencoder;


import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * 凭证匹配器。
 * 专门用于做认证流程的凭证校验使用的类型。
 * 其中有两个核心方法。
 * 1、encode -- 把明文密码，加密成密文密码。
 * 2、matches -- 校验明文和密文是否匹配。
 */
public class SimplePasswordEncoder implements PasswordEncoder {
    /**
     * 加密逻辑
     * @param rawPassword 明文字符串。就是页面收集的源密码
     * @return
     */
    @Override
    public String encode(CharSequence rawPassword) {
        System.out.println("加密逻辑执行");
        return new String(rawPassword.toString());
    }

    /**
     * 匹配逻辑
     * @param rawPassword：明文，页面收集的密码
     * @param encodedPassword：密文，存储在数据源中的密码。
     * @return
     */
    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        System.out.println("密码匹配逻辑执行");
        return encodedPassword.equals(encode(rawPassword));
    }
}
